基本的雲端資源都準備好之後我們就要準備來建立最主要的運算服務 Cloud Run,我們可以直接把 Code 打包成 Container 上傳到 Artifact Registry 提供給 Cloud Run 使用,但這樣並沒有持續部屬的功能,每次要上版本都要重新的打包部屬效率較差,我們可以透過 Cloud Build 來實現自動的建置部屬。
Cloud Build 可以從 GitHub GitLab 或是 Bitbucket 抓取 Code 做 CI,在自動將 Build 完的 Image CD 給 Cloud Run 做使用
首先我們需要先把 Code 推到 GitLab 或 GitHub,其實 GCP 也有提供雲端的 Repo(Cloud Source Repositories) ,但實在是太難用而且 Google 也準備關閉這個服務,我們這裡就不推薦使用。
你可以先建立一個空的 web 服務,有一個 endpoint 可以打的到做測試即可,我這裡先用 Dotnet WebAPI 預設 template 做範例。
假設我這邊已經推送到我自己的 Github https://github.com/DellLin/iThome2024.SalesService
過去我們要單獨的設定 Cloud Build 跟 Cloud Run,現在可以在 Cloud Run 的建立頁面就快速的做完一整套的設定
首先我們前往建立 Cloud Run 的 Service
可以看到最上面就有不同的來源可以選擇,我們可以選擇中間的 Github 做持續部屬
存放區預設會是空的,這裡要連結到你的Github,照著指示一步一步登入Github 授權給 Google Cloud 就可以了,因為我已經連結上,我這裡就不多做說明。
選擇好你的 Repo 後就可以點選下一步
建構類型這裡記得要選擇 Dockerfile,這樣 Cloud Build 才會使用 Repo 裡面的 Dockerfile 來建立 Image
給我們的 Cloud Run 一個方便識別的名稱
這裡許則 asia-east1
我們的服務是對外開放的,身分驗證試做在應用程式內部,所以這料選擇”允許未經驗證的叫用”
為了節省成本我們選擇"只在要求處理期間分配 CPU” 這個選項會大幅度的影響到我們的費用
這裡可以先給 0,等服務開發測試完成沒問題後我們再做調升。
我們的服務是直接對外的,這裡我們選擇全部
填寫完畢後我們就按下建立,接下來就等待 Cloud Build 自動幫我們進行 CI/CD
Cloud Build 部屬完成後 你的 Cloud Run 就會是綠燈,並且預設 Cloud Run 都會有一個對外的網址可以直接訪問
我推上去的 Code 是 Dotnet 的預設 Template 有一個 weatherforecast 的 API 測試OK。
Cloud Build 實際上就是去 Github 把你的 Code Clone 下來 Build 成 image 放在 artifacts 給 Cloud Run 做使用,可以在 Cloud Run 的詳細資訊裡面看到現在的 Cloud Run 使用的是哪個 image
在 artifacts 就可以找到對應的 image
已上我們今天就部屬好了 Cloud Run 並且確定可以打到我們的服務。